바이트 오더링
바이트 오더링은 데이터 저장방식을 말한다.
바이트 오더링은 크게 두가지 방식이 존재하는데 빅 엔디언(Big Endian)과 리틀 엔디언(Little Endian)이다.
빅 엔디언은 UNIX 서버에 사용되는 RISC 계열의 CPU에서 사용된다. 또한 네트워크 프로토콜에서도 빅 엔디언이 사용된다.
리틀 엔디언은 Intel x86-x64 CPU에서 사용된다.
간단 예제
BYTE b = 0x12; WORD w = 0x1234; DWORD dw = 0x12345678; char str[] = "abcde";
TYPE | Name | SIZE | Big Endian | Little Endian |
BYTE | b | 1 | [12] | [12] |
WORD | w | 2 | [12][34] | [34][12] |
DWORD | dw | 4 | [12][34][56][78] | [78][56][34][12] |
char [] | str | 6 | [61][62][63][64][65][00] | [61][62][63][64][65][00] |
디버깅을 통한 리틀 엔디언 확인
#include "windows.h" BYTE b = 0x12; WORD w = 0x1234; DWORD dw = 0x12345678; char str[] = "abcde"; int main(int argc, char *argv[]) { BYTE lb = b; WORD lw = w; DWORD ldw = dw; char *lstr = str; return 0; }
위 코드를 빌드 후 ollyDbg를 이용하여 분석하였다.
main() 함수로 이동하여 전역변수의 주소를 확인 후 살펴 보았다.
![notion image](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F0de85482-c105-4bc9-8ce2-427dab62a0c0%2F9bf5bea3-0ae0-4f9a-a80f-9bc623ede9be%2FUntitled.png?table=block&id=18811a6d-f42d-4d91-b44f-b51d6ec4ac3b&cache=v2)
40AC40(b)
![notion image](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F0de85482-c105-4bc9-8ce2-427dab62a0c0%2F38a611f2-a2e8-4c9a-9618-3f31e220fe92%2FUntitled.png?table=block&id=35d7e710-382a-4d22-a2c5-291375a6f42a&cache=v2)
40AC44(w)
![notion image](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F0de85482-c105-4bc9-8ce2-427dab62a0c0%2F558a9512-e0a0-4dc6-a935-fce060786667%2FUntitled.png?table=block&id=3e7a82a2-5dd6-4c93-9a4b-51716f0f0294&cache=v2)
40AC48(dw)
![notion image](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F0de85482-c105-4bc9-8ce2-427dab62a0c0%2F3db5a845-9026-4812-9edc-dff320bf81cc%2FUntitled.png?table=block&id=5be7c021-5976-44dc-8dd1-80726135634c&cache=v2)
40AC4C(str)
![notion image](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F0de85482-c105-4bc9-8ce2-427dab62a0c0%2F15a80bc6-e119-4d16-8f79-f751c312c8cf%2FUntitled.png?table=block&id=970c7f23-37af-4051-94c5-488a522a7718&cache=v2)